From 16063f12395cab7d2f1b5b33000c5aa4b8c321ae Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Sat, 19 Nov 2016 20:08:28 +0100 Subject: [PATCH] two-table: add RGBA float to R'G'B'A u8 --- extensions/two-table.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/extensions/two-table.c b/extensions/two-table.c index 5c67ad6..6be18ca 100644 --- a/extensions/two-table.c +++ b/extensions/two-table.c @@ -116,6 +116,37 @@ conv_rgbafloat_linear_rgbu8_gamma (unsigned char *src_char, return samples; } + +static long +conv_rgbafloat_linear_rgbau8_gamma (unsigned char *src_char, + unsigned char *dst, + long samples) +{ + long n = samples; + float *src = (float*)src_char; + + while (n--) + { + if (src[3] <=0) + { + dst[0] = 0; + dst[1] = 0; + dst[2] = 0; + dst[3] = 0; + } + else + { + dst[0] = conv_float_u8_two_table_map (src[0]); + dst[1] = conv_float_u8_two_table_map (src[1]); + dst[2] = conv_float_u8_two_table_map (src[2]); + dst[3] = src[3] * 0xff + 0.5; + } + src += 4; + dst += 4; + } + return samples; +} + static long conv_rgbfloat_linear_rgbu8_gamma (unsigned char *src_char, unsigned char *dst, @@ -211,6 +242,12 @@ init (void) conv_rgbafloat_linear_rgbu8_gamma, NULL); + babl_conversion_new (babl_format ("RGBA float"), + babl_format ("R'G'B'A u8"), + "linear", + conv_rgbafloat_linear_rgbau8_gamma, + NULL); + babl_conversion_new (babl_format ("RGB float"), babl_format ("R'G'B' u8"), "linear", -- 2.30.2